from typing import List


class Solution:
    def find132pattern(self, nums: List[int]) -> bool:
        n=len(nums)
        # 维护递减 单调栈
        stack=[]
        # 初始化赋值为最小 k为被弹出的元素，被弹出 说明 满足 nums[k]<nums[j]
        # 只要再找到 nums[i] < nums[k] ，返回 True
        k=float('-inf')
        for i in range(n-1,-1,-1):
            # 如果前面存在一个比k 小的 ，说明 符合 132 模式
            if nums[i]<k:
                return True
            # 维护 单调递减的 栈，被 弹出的元素，都是小于的，栈中存放大的元素
            while stack and nums[stack[-1]] < nums[i]:
                # k是当前最大的元素
                k=nums[stack.pop()]
            stack.append(i)
        return False